package com.zyy.study.always;

import org.junit.jupiter.api.Test;

public class Code2 {

    @Test
    public void test1() {
        System.out.println(StringUtils.reverse("abcde"));
        System.out.println(StringUtils.isPalindrome("abcba"));
        System.out.println(StringUtils.isPalindrome("abca"));
    }
}
/**
 * 题目1：学生成绩管理系统（面向对象基础）
 * <p>
 * 需求描述
 * 创建一个Student类，包含：
 * 学生姓名(name)
 * 学号(id)
 * 语文成绩(chineseScore)
 * 数学成绩(mathScore)
 * 英语成绩(englishScore)
 * 实现以下功能：
 * 计算学生总分
 * 计算学生平均分
 * 判断学生是否及格（单科≥60）
 * 打印学生成绩单
 */
class Student {
    private String name;
    private String id;
    private int chineseScore;
    private int mathScore;
    private int englishScore;

    // 构造方法
    public Student(String name, String id, int chineseScore, int mathScore, int englishScore) {
        // 实现
        this.name = name;
        this.id = id;
        this.chineseScore = chineseScore;
        this.mathScore = mathScore;
        this.englishScore = englishScore;

    }

    // 计算总分
    public int getTotalScore() {
        return chineseScore + mathScore + englishScore;
    }

    // 计算平均分
    public double getAverageScore() {
        // 实现
        return getTotalScore() / 3;
    }

    // 判断是否及格
    public boolean isPassed() {
        // 实现
        return (chineseScore >= 60) && (mathScore >= 60) && (englishScore >= 60) ? true : false;
    }

    // 打印成绩单
    public void printReport() {
        // 实现
        System.out.println("student:" + name + ",chinese score:" + chineseScore + ",math score:" + mathScore + ",english score:" + englishScore + ",avg score:" + getAverageScore() + ",isPass:" + isPassed());
    }

    // Getter/Setter方法...

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getChineseScore() {
        return chineseScore;
    }

    public void setChineseScore(int chineseScore) {
        this.chineseScore = chineseScore;
    }

    public int getMathScore() {
        return mathScore;
    }

    public void setMathScore(int mathScore) {
        this.mathScore = mathScore;
    }

    public int getEnglishScore() {
        return englishScore;
    }

    public void setEnglishScore(int englishScore) {
        this.englishScore = englishScore;
    }
}

/**
 * 题目2：字符串工具类（基础方法实现）
 * <p>
 * 需求描述
 * 创建一个StringUtils类，实现以下静态方法：
 * <p>
 * 判断字符串是否为空（null或空字符串）
 * 统计字符串中某字符出现的次数
 * 反转字符串
 * 检查字符串是否为回文（正读反读都相同）
 */
class StringUtils {
    // 判断字符串是否为空
    public static boolean isEmpty(String str) {
        // 实现
        return str == null || str.length() == 0 ? true : false;
    }

    // 统计字符出现次数
    public static int countChar(String str, char c) {
        // 实现
        if (isEmpty(str)) {
            return 0;
        }
        char[] charArray = str.toCharArray();
        int count = 0;
        for (int i = 0; i < charArray.length; i++) {
            if (charArray[i] == c) {
                count++;
            }
        }
        return count;
    }

    // 反转字符串
    public static String reverse(String str) {
        // 实现
        int start = 0;
        int end = str.length() - 1;
        char[] charArray = str.toCharArray();
        while (start < end) {
            char temp = charArray[start];
            charArray[start] = charArray[end];
            charArray[end] = temp;
            start++;
            end--;
        }
        return new String(charArray);

    }

    // 判断回文字符串
    public static boolean isPalindrome(String str) {
        // 实现
        int start = 0;
        int end = str.length() - 1;
        char[] charArray = str.toCharArray();
        while (start < end) {
            if (charArray[start] == charArray[end]) {
                start++;
                end--;
            } else {
                return false;
            }
        }
        return true;
    }
}